# 抖码算法，让算法学习变得简单有趣
# 作者：老汤


graph = {}
# 用于存储最终的无效的服务
invalid_service_set = set()

dependencies = str(input()).split(",")
# 存储所有的服务
service_list = list()
# 遍历所有的服务依赖，建立图结构
for dep in dependencies:
    services = dep.split("-")
    # a-b：表示的是 a 服务依赖于 b，
    a, b = services[0], services[1]
    # 不过这里边的方向是 b 到 a，即： a<--b
    # 即维护服务 b 以及依赖它的所有的其他服务
    if b in graph:
        graph[b].add(a)
    else:
        s = set()
        s.add(a)
        graph[b] = s
    # 如果 a 或者 b 在前面没有出现过，则放入到服务列表中
    if a not in service_list:
        service_list.append(a)
    if b not in service_list:
        service_list.append(b)


# 从指定失效服务开始，找到依赖这个服务的所有其他的服务，并将它们失效
def dfs(invalid_service):
    # 放入到失效服务集中
    invalid_service_set.add(invalid_service)
    # 如果图中不存在这个失效服务，则直接返回
    if invalid_service not in graph:
        return
    # 遍历直接依赖这个失效服务的其他服务，使其失效
    for w in graph[invalid_service]:
        if w not in invalid_service_set:
            dfs(w)


# 给定的失效服务列表
invalid_services = str(input()).split(",")
for invalid_s in invalid_services:
    # 如果当前的失效服务不在最终的失效服务集里
    if invalid_s not in invalid_service_set:
        # 那么从这个失效服务开始，找到依赖这个服务的所有其他的服务，并将它们失效
        dfs(invalid_s)

# 输出结果
res = ""
for i in range(len(service_list)):
    if service_list[i] not in invalid_service_set:
        res += service_list[i]
        res += ","

if len(res) == 0:
    print(",")
else:
    # 删除最后的逗号
    res = res[0:len(res) - 1]
    print(res)